/*
 * LocalGraph.h
 *
 *  Created on: 14/11/2011
 *      Author: will
 */

#ifndef LOCALGRAPH_H_
#define LOCALGRAPH_H_

#include "GraphNode.h"
#include "GraphEdge.h"
#include "Particle.h"

#include "MotionModel.h"

#include <vector>
#include <map>
#include <set>
#include <utility>

using std::vector;
using std::map;
using std::set;
using std::pair;
using Eigen::Vector3d;
using Eigen::Matrix3d;

class LocalGraph {
public:
	LocalGraph();
	virtual ~LocalGraph();
	LocalGraph(const LocalGraph & other);
	LocalGraph & operator=(const LocalGraph & other);

	// Data Storage
	map<GraphNode*, Vector3d> nodes;
	set<GraphEdge*> edges;
	unsigned int numParticles;

	LocalGraph(Particle* root, double radius, unsigned int maxFrame);
	LocalGraph(GraphNode* root, double radius);
	LocalGraph(GraphNode* root, unsigned int depth);

};


#endif /* LOCALGRAPH_H_ */
